From 89b2d267244b244776aa12bbae9bd0441a350ef6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Juan=20Hern=C3=A1ndez?= Date: Mon, 3 Oct 2016 10:55:05 +0200 Subject: [PATCH] Use chain_error in TomlManifest.replace when checking valid semver. Don't throw away previous error messages, they might be useful for the user. --- src/cargo/util/toml.rs | 11 +++++------ tests/overrides.rs | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/cargo/util/toml.rs b/src/cargo/util/toml.rs index 578d44743..a051a2836 100644 --- a/src/cargo/util/toml.rs +++ b/src/cargo/util/toml.rs @@ -737,12 +737,11 @@ impl TomlManifest { -> CargoResult> { let mut replace = Vec::new(); for (spec, replacement) in self.replace.iter().flat_map(|x| x) { - let spec = match PackageIdSpec::parse(spec) { - Ok(spec) => spec, - Err(_) => bail!("replacements must specify a \ - valid semver version \ - to replace, but `{}` does not", spec), - }; + let spec = try!(PackageIdSpec::parse(spec).chain_error(|| { + human(format!("replacements must specify a valid semver \ + version to replace, but `{}` does not", + spec)) + })); let version_specified = match *replacement { TomlDependency::Detailed(ref d) => d.version.is_some(), diff --git a/tests/overrides.rs b/tests/overrides.rs index eff9bbf9d..816efd53c 100644 --- a/tests/overrides.rs +++ b/tests/overrides.rs @@ -95,7 +95,7 @@ fn invalid_semver_version() { .file("src/lib.rs", ""); assert_that(p.cargo_process("build"), - execs().with_status(101).with_stderr("\ + execs().with_status(101).with_stderr_contains("\ error: failed to parse manifest at `[..]` Caused by: -- 2.30.2